滑個推特滿螢幕都在吹什麼 Vibe Coding、AI Coding,看了真的會躁鬱... 一張嘴、按個 Tab 鍵,路邊的路人都能當 10x 架構師?寫 Code 變快有什麼用,產出一堆連 Boundary Condition 都不顧的垃圾,最後還不是同事們一起幫忙擦屁股。如果上游只管用 LLM 狂倒垃圾,你 CI Pipeline 沒設硬門禁,那根本不叫自動化,那叫垃圾場。
做軟體測試,說穿了就是工業工程(IE)。最怕的就是 Muda(浪費)。以前 RD 手刻 Code 雖然慢,但至少產能是可控的,Bug 也是人類大腦的正常盲區。現在呢?Copilot 一開,一秒鐘給你吐出兩百行看起來煞有其事、實則連 Exception 都不接的爛 Code。
要在這波 AI 狂潮活下來,別再去相信什麼「AI 會自己修 Bug」的鬼話。AI 最會的就是寫出「語法 100 分,商業邏輯 0 分」的智障 Code。
我們要在專案最外層,直接焊死第一道強制阻斷機制。別依賴人眼去抓,人眼是最不可靠的品檢站。以下是在 Python 專案裡,怎麼用 Makefile 設下 CI 門禁,把 AI 產出的垃圾直接擋下來。
# Makefile - 工業級 Poka-Yoke 防呆閘門,別想繞過
.PHONY: pre-commit-poka-yoke
pre-commit-poka-yoke:
@echo "第一道防線:語法與型別嚴格審查"
# 抓出 AI 最愛亂塞的 Any 或是沒定義的型別,沒寫清楚直接噴 Error
mypy --strict --disallow-untyped-defs src/
@echo "第二道防線:架構複雜度檢測 "
# 圈複雜度 (Cyclomatic Complexity) 超過 8?代表這坨 Code 邏輯已經跟義大利麵一樣了,直接停掉吧
ruff check . --select ALL --ignore ANN101 --max-complexity 8
@echo "第三道防線:依賴邊界檢查"
# 防堵 AI 把 Domain Logic 偷拉 Infra 的華麗行為
import-linter --contract-type layers
當然光在 Local 端擋沒用,你也不知道會不會哪一個天兵就 git commit --no-verify 硬推。把這套標準直接寫死進 GitHub Actions 吧
# .github/workflows/poka-yoke-gate.yml
name: AI
on:
pull_request:
branches: [ "main", "production" ]
jobs:
strict-quality-control:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: 安裝檢驗儀器
run: pip install mypy ruff import-linter
- name: Andon 停線:嚴格型別審查
run: mypy --strict --disallow-untyped-defs src/
- name: Andon 停線:Ruff 複雜度掃描
run: ruff check . --select ALL --ignore ANN101